.TH std::experimental::ranges::invoke 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::experimental::ranges::invoke \- std::experimental::ranges::invoke

.SH Synopsis
   Defined in header <experimental/ranges/functional>
   template< class F, class... Args >                                 (ranges TS)
   std::result_of_t<F&&(Args&&...)> invoke( F&& f, Args&&... args );

   Invoke the Callable object f with the parameters args, and return the result, as if
   by return INVOKE(std::forward<F>(f), std::forward<Args>(args)...);, where INVOKE(f,
   t1, t2, ..., tN) is defined as follows:

     * if f is a pointer to member function of class T:

     * If std::is_base_of<T, std::decay_t<decltype(t1)>>::value is true, then INVOKE(f,
       t1, t2, ..., tN) is equivalent to (t1.*f)(t2, ..., tN),
     * otherwise, INVOKE(f, t1, t2, ..., tN) is equivalent to ((*t1).*f)(t2, ..., tN).
     * otherwise, if N == 1 and f is a pointer to data member of class T:

     * If std::is_base_of<T, std::decay_t<decltype(t1)>>::value is true, then INVOKE(f,
       t1) is equivalent to t1.*f,
     * otherwise, then INVOKE(f, t1) is equivalent to (*t1).*f.
     * otherwise, INVOKE(f, t1, t2, ..., tN) is equivalent to f(t1, t2, ..., tN) (that
       is, f is a FunctionObject).

.SH Parameters

   f    - Callable object to be invoked
   args - arguments to pass to f

.SH See also

   invoke   invokes any Callable object with given arguments
   invoke_r and possibility to specify return type
   \fI(C++17)\fP  (since C++23)
   (C++23)  \fI(function template)\fP
